#!/usr/bin/env python
#Boa:PyApp:main

import consultasBD
import utiles
import re
import sys

modules ={}

def verificaEmail(email):
    if not '@' in email:
        return "",False
    try:
        direccion,dominio = email.split("@")
    except:
        return "",False
    if direccion == "" or dominio=="":
        return "",False
    if dominio.split(".")[-1:] == "a":
        return "",False
    direccion = direccion.lower()
    direccion = direccion.replace('"','')
    direccion = direccion.replace(',','.')
    dominio = dominio.replace(',','.')
    if dominio.lower()=="hotmail.com.ar":
        dominio="hotmail.com"
    elif dominio.lower()=="hotmail":
        dominio="hotmail.com"
    elif dominio.lower()=="yahoo":
        dominio="yahoo.com"
    
    email = direccion+"@"+dominio
    return email,True

def validateEmail(email):
    if len(email) > 7:
        if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", email) != None:
            return True
    return False

def procesarDatos(lista,f,sucursal):
    contador = 0
    rechazados = 0
    for item in lista:
        nombre = item["nombre"]
        #email,error = verificaEmail(item["email"])
        email = item["email"]
        correcto = validateEmail(email)
        #if not error:
        if not correcto:
            print "Error: ",item["idcliente"],item["email"],nombre
            rechazados+=1
            continue
#        f.write('"'+email+'","'+nombre+'"\n')
        f.write(email+','+nombre+'\n')
        contador+=1
    print "Registros procesados sucursal:",sucursal,contador
    return contador,rechazados

def main():
    try:
        sucursal = sys.argv[1]
        if sucursal.upper() == "SUSSAN":
            sucu = 1
        elif sucursal.upper() == "SASKA":
            sucu = 2
        elif sucursal.upper() == "PARANA":
            sucu = 3
        elif sucursal.upper() == "CENTRAL":
            sucu = 4
        elif sucursal.upper() == "PEATONAL":
            sucu = 5
        else:
            sucu = 0
    except:
        sucu = 0
    aux = utiles.obtenerFecha("Y-m-d h:m:s")
    fecha = aux[:4]+aux[5:7]+aux[8:10]+"-"+aux[11:13]+aux[14:16]+aux[-2:]
    f = open("c:\\matrisamor.doc\\clientes-"+fecha+".csv","w")
    f.write('email,nombre\n')
    print "Exportacion de datos de clientes"
    lista = []
    resultados1 = []
    resultados2 = []
    resultados3 = []
    resultados4 = []
    if sucu == 0 or sucu == 1:
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%1-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados1,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados1)
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%2-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados2,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados2)
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%4-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados4,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados4)
    if sucu == 0 or sucu == 2:
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%3-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados3,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados3)
    if sucu == 3:
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%2-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados1,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados1)
    if sucu == 4:
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%1-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados1,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados1)
    if sucu == 5:
        sql = "SELECT idcliente,email,nombre FROM cliente WHERE idcliente LIKE '%4-%' AND email<>'' AND listanegra<>'1' ORDER BY nombre"
        resultados1,conecta = consultasBD.ordenCrudaDictRemota(sql,0) #conecta con central
        lista.append(resultados1)
    totalRegistros = len(resultados1) + len(resultados2) + len(resultados3) + len(resultados4)
    total = 0
    totalrechazados = 0
    sucursal = 1
    for minilista in lista:
        procesados,rechazados = procesarDatos(minilista,f,3)
        total+= procesados
        totalrechazados+=rechazados
        sucursal+=1
    print "Total registros a procesar:",totalRegistros
    print "Total registros procesados:",total
    print "Total registros rechazados:",totalrechazados
    f.close()

if __name__ == '__main__':
    #POR LINEA DE COMANDO SE LE PUEDE PASAR EL PARAMETRO: SUSSAN PARA CLIENTES DE SUSSAN,
    #SASKA PARA CLIENTES DE SASKA O SE DEJA EN BLANCO PARA TODOS LOS CLIENTES
    main()
